#include <stdio.h>
void Swap(int *p1,int*p2)
{
	int tmp=*p1;
	*p1=*p2;
	*p2=tmp;
	
}
void Print(int*a,int n)
{
	for(int i=0;i<n;i++)
		{
			printf("%d ",a[i]);
		}
	printf("\n");
}
void SelectSort(int* a, int n)
{
	int end=n-1;
	for(int i =0;i<n/2;i++)
		{
			
			int began=i;
			int mini=began;
			int max=end;
			while(began<=end)
				{
					if(a[began]<a[mini])
						{
							mini=began;
						}
					if(a[began]>a[max])
						{
							max=began;
						}
					began++;
				}
			
			if(a[max]!=a[end]||a[mini]!=a[i])//如果mini就是最大，max就是最小不交换
				{
					
					Swap(&a[i],&a[mini]);
					if(a[max]==a[i])
						{
							max=mini;
						}
					Swap(&a[end],&a[max]);
				}
			
			end--;
		}
}
//
//void SelectSort(int* a, int n)//少交换
//{
//	int began = 0;
//	int end = n - 1;
//	while(began<end)
//		{
//			int mini = began, max = end;
//			for (int i = began; i <= end; i++)
//				{
//					if(a[i]<a[mini])
//						{
//							mini=i;
//						}
//					if(a[i]>a[max])
//						{
//							max = i;
//						}
//				}
//			Swap(&a[max],&a[end]);
//			if(a[max]==a[mini])//交换过程中可能会导致原来比较小的那个被交换，变成大的
//				{
//					max=mini;
//				}
//			Swap(&a[mini],&a[began]);
//			began++;
//			end--;
//		}
//}
int main(int argc, char *argv[]) 
{
	int arr[]={54,38,96,23,15,72,60,45,83};
	Print(arr,sizeof(arr)/sizeof(arr[0]));
	SelectSort(arr, sizeof(arr)/sizeof(arr[0]));
	Print(arr,sizeof(arr)/sizeof(arr[0]));
	
}